package controller;

import dao.ConteudoDaEmentaJpaController;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import dao.exceptions.NonexistentEntityException;
import model.Conteudo;
import model.ConteudoDaEmenta;
import model.Ementa;
import model.Turma;
import pagecontroller.JsfUtil;

/**
 *
 * @author Edilson Fernandes da Costa
 * @version 1.0
 */
public class ConteudoDaEmentaController {

    public ConteudoDaEmentaController() {
        if (JsfUtil.getObjectFromSession("ConteudoDaEmentaJpaController") == null) {
            jpaController = new ConteudoDaEmentaJpaController();
        } else {
            jpaController = (ConteudoDaEmentaJpaController) JsfUtil.getObjectFromSession("ConteudoDaEmentaJpaController");
        }
    }
    private ConteudoDaEmenta conteudoDaEmenta = null;
    private ConteudoDaEmenta conteudoDaEmentaAux = null;
    private ConteudoDaEmentaJpaController jpaController = null;
    private List<ConteudoDaEmenta> conteudoDaEmentas = null;

    public void persiste() {
        if (conteudoDaEmenta.getId() == null) {
            create();
        } else {
            update();
        }
    }

    public String update() {
        try {
            jpaController.edit(this.conteudoDaEmenta);
            conteudoDaEmentaAux = conteudoDaEmenta;
            this.conteudoDaEmenta = null;
            JsfUtil.addSuccessMessage("ConteudoDaEmenta Atualizado com Sucesso");
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ConteudoDaEmentaController.class.getName()).log(Level.SEVERE, null, ex);
        } catch (Exception ex) {
            Logger.getLogger(ConteudoDaEmentaController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return "refreshPage";
    }

    public String create() {
        try {
            jpaController.create(conteudoDaEmenta);
            conteudoDaEmentaAux = conteudoDaEmenta;
            conteudoDaEmenta = null;
            JsfUtil.addSuccessMessage("ConteudoDaEmenta cadastrado com sucesso.");
        } catch (Exception e) {
            JsfUtil.ensureAddErrorMessage(e, "Ocorreu um erro na percistencia dos dados.");
            return null;
        }
        return "refreshPage";
    }

    public String edit() {
        ConteudoDaEmenta conteudoDaEmentaTemp = (ConteudoDaEmenta) JsfUtil.getObjectFromRequestParameter("conteudoDaEmenta");
        this.conteudoDaEmenta = conteudoDaEmentaTemp;
        return "refreshPage";
    }

    public String destroy() {
        ConteudoDaEmenta conteudoDaEmentaTemp = (ConteudoDaEmenta) JsfUtil.getObjectFromRequestParameter("conteudoDaEmenta");
        try {
            jpaController.destroy(conteudoDaEmentaTemp.getId());
            JsfUtil.addSuccessMessage("ConteudoDaEmenta removido com sucesso.");
        } catch (NonexistentEntityException ex) {
            Logger.getLogger(ConteudoDaEmentaController.class.getName()).log(Level.SEVERE, null, ex);
        }

        return "refreshPage";
    }

    public ConteudoDaEmenta getConteudoDaEmenta() {
        if (conteudoDaEmenta == null) {
            conteudoDaEmenta = new ConteudoDaEmenta();
        }
        return conteudoDaEmenta;
    }

    public List<ConteudoDaEmenta> getConteudoDaEmentas() {
        this.conteudoDaEmentas = jpaController.findConteudoDaEmentaEntities();
        return this.conteudoDaEmentas;
    }

    public ConteudoDaEmentaJpaController getJpaController() {
        return jpaController;
    }

    public ConteudoDaEmenta getConteudoDaEmentaAux() {
        return conteudoDaEmentaAux;
    }

    public List<ConteudoDaEmenta> getConteudoDaEmentas(Ementa ementa) {
        try {
            conteudoDaEmentas = jpaController.findForEmenta(ementa);
        } catch (Exception ex) {
            Logger.getLogger(ConteudoDaEmentaController.class.getName()).log(Level.SEVERE, null, ex);
        }
        return conteudoDaEmentas;
    }

    public List<ConteudoDaEmenta> getConteudoDaEmentas(Turma turma) {
        conteudoDaEmentas = jpaController.findConteudoDaEmenta(turma);
        return conteudoDaEmentas;
    }
    
    public List<ConteudoDaEmenta> getConteudoDaEmentas(Conteudo conteudo) {
        conteudoDaEmentas = jpaController.findConteudoDaEmenta(conteudo);
        return conteudoDaEmentas;
    }
}
